/*
 * Copyright (c) 2016 Bilibili
 * copyright (c) 2016 Zhang Rui <bbcallen@gmail.com>
 *
 * This file is part of ijkPlayer.
 *
 * ijkPlayer is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * ijkPlayer is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with ijkPlayer; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 */

#include "ijksdl/gles2/internal.h"

static const char g_shader[] = "#version 410                           \n"
"precision highp float;                                                 \n"
"in   highp vec2 vv2_Texcoord;                                          \n"
"uniform         mat3 um3_ColorConversion;                              \n"
"uniform   lowp  sampler2D us2_SamplerX;                                \n"
"uniform   lowp  sampler2D us2_SamplerY;                                \n"
"uniform   lowp  sampler2D us2_SamplerZ;                                \n"
"out vec4 myOutputColor;                                                \n"
"void main()                                                            \n"
"{                                                                      \n"
"    mediump vec3 yuv;                                                  \n"
"    lowp    vec3 rgb;                                                  \n"
"    yuv.x = (texture(us2_SamplerX, vv2_Texcoord).r - (16.0 / 255.0));  \n"
"    yuv.y = (texture(us2_SamplerY, vv2_Texcoord).r - 0.5);             \n"
"    yuv.z = (texture(us2_SamplerZ, vv2_Texcoord).r - 0.5);             \n"
"    rgb = um3_ColorConversion * yuv;                                   \n"
"    myOutputColor = vec4(rgb, 1);                                      \n"
"}                                                                      \n";




//static const char g_shader1[] = IJK_GLES_STRING(
//    precision highp float;
//    varying   highp vec2 vv2_Texcoord;
//    uniform         mat3 um3_ColorConversion;
//    uniform   lowp  sampler2D us2_SamplerX;
//    uniform   lowp  sampler2D us2_SamplerY;
//    uniform   lowp  sampler2D us2_SamplerZ;
//
//    void main()
//    {
//        mediump vec3 yuv;
//        lowp    vec3 rgb;
//
//        yuv.x = (texture2D(us2_SamplerX, vv2_Texcoord).r - (16.0 / 255.0));
//        yuv.y = (texture2D(us2_SamplerY, vv2_Texcoord).r - 0.5);
//        yuv.z = (texture2D(us2_SamplerZ, vv2_Texcoord).r - 0.5);
//        rgb = um3_ColorConversion * yuv;
//        gl_FragColor = vec4(rgb, 1);
//    }
//);

const char *IJK_GLES2_getFragmentShader_yuv420p()
{
    return g_shader;
}
